package domain;

public class Adicional extends Plan {

	private int unidadesLibres;
	private float costoAdicional;

	public Adicional(boolean facturable, int nroPlan, int unidadesLibres,
			float costoAdicional) {
		super(facturable, nroPlan);

		setUnidadesLibres(unidadesLibres);
		setCostoAdicional(costoAdicional);
	}

	public int getUnidadesLibres() {
		return unidadesLibres;
	}

	public void setUnidadesLibres(int minutosLibres) {
		this.unidadesLibres = minutosLibres;
	}

	public float getCostoAdicional() {
		return costoAdicional;
	}

	public void setCostoAdicional(float costoAdicionalPorVoz) {
		this.costoAdicional = costoAdicionalPorVoz;
	}	

	@Override
	public void persistir() {
		// TODO Auto-generated method stub

	}

	@Override
	public boolean agregablePaquete() {
		return true;
	}

	@Override
	public float calcularCosto(Consumo consumo) {
		int excedente = 0;

		if (consumo.getCantidad() > getUnidadesLibres()) {
			excedente = consumo.getCantidad() - unidadesLibres;
		}

		return consumo.getServicio().calcularConsumo(consumo.getCantidad())
				+ (excedente * getCostoAdicional());
	}

}
